package com.zhongwang.mms.module.basic.dao;

import com.zhongwang.mms.module.basic.model.VerifyProcess;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 审批流程持久层
 */
@Repository
public interface VerifyProcessMapper {
    /**
     * 插入数据
     * @param verifyProcess 数据
     * @return 返回插入数据的数据量
     */
    Integer insert(VerifyProcess verifyProcess);

    /**
     * 按 计划单ID 删除
     */
    int delBySheetCode(String sheetCode);

    /**
     * 按 计划单ID 查 当前审核流程
     */
    VerifyProcess findCurVpBySheetCode(String sheetCode);

    /**
     * 查询下一条审核流程
     */
    VerifyProcess findNextVp(VerifyProcess vp);

       /**
     * 查询上一条审核流程
     */
    VerifyProcess findPreVp(VerifyProcess vp);

    /**
     * 按ID修改当前标识
     */
    int updateCurById(@Param("id") Integer id, @Param("cur") Integer cur);

    /**
     * 按ID修改当前标识和状态
     */
    int updateStatusAndCurAndTimeById(@Param("id") Integer id, @Param("status") Integer status,
                                      @Param("cur") Integer cur, @Param("time") Date time);

    /**
     * 按 sheet_code 查询审核流程
     */
    List<VerifyProcess> findVpBySheetId(Integer sheetId);

    /**
     * 查询下一条审核流程, 无论下一条是否存在当前审核标识
     */
    VerifyProcess findNextVerifyProcess(VerifyProcess vp);

    /**
     * 根据主键ID更新 sys_verify_process 表数据
     * @param preVp 更新内容
     * @return 更新数据调试
     */
    Integer updateById(VerifyProcess preVp);

    VerifyProcess findCompVpBySheetCode(@Param("sheetCode") String sheetCode);
}
